package com.wltt.product.ahuthr.mapper.base;

import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;


/**
 * @ClassName: BaseMapper
 * @Description: 数据访问公共层
 * @Date: 2024-05-17 09:03:14
 * @Author yanggl
 */
public interface BaseMapper<T, ID extends Serializable> {

    /**
     * 可选插入返回主键
     *
     * @param entity
     * @return
     */
    ID insertSelective(T entity);

    /**
     * 批量插入返回影响记录数
     *
     * @param records
     * @return
     */
    int insertRecords(@Param("records") List<T> records);

    /**
     * 根据条件查询单条记录
     *
     * @param entity
     * @return
     */
    T queryLimitOne(T entity);

    /**
     * 批量主键查询
     *
     * @param ids
     * @return
     */
    List<T> queryByIds(@Param("keys") List<ID> ids);

    /**
     * 条件查询
     *
     * @param entity
     * @return
     */
    List<T> queryByCond(T entity);

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    T queryById(@Param("id") ID id);

    /**
     * 主键更新
     *
     * @param entity
     * @return
     */
    int updateById(T entity);

    /**
     * 主键删除
     *
     * @param id
     * @return
     */
    int deleteById(@Param("id") ID id);


    /**
     * 主键批量删除
     *
     * @param ids
     * @return
     */
    int deleteByIds(@Param("keys") List<ID> ids);
}